Eeective Flow Analysis for Avoiding Run-time Checks
نویسنده
چکیده
This paper describes a general purpose program analysis that computes global control-ow and data-ow information for higher-order, call-by-value programs. This information can be used to drive global program optimizations such as inlining and run-time check elimination, as well as optimizations like constant folding and loop invariant code motion that are typically based on special-purpose local analyses. The analysis employs a novel approximation technique called poly-morphic splitting that uses let-expressions as syntactic clues to gain precision. Polymorphic splitting borrows ideas from Hindley-Milner poly-morphic type inference systems to create an analog to polymorphism for ow analysis. Experimental results derived from an implementation of the analysis for Scheme indicate that the analysis is extremely precise and has reasonable cost. In particular, it eliminates signiicantly more run-time checks than simple ow analyses (i.e. 0CFA) or analyses based on type inference.
منابع مشابه
Effective Flow Analysis for Avoiding Run-Time Checks
This paper describes a general purpose program analysis that computes global control-ow and data-ow information for higher-order, call-by-value programs. This information can be used to drive global program optimizations such as inlining and run-time check elimination, as well as optimizations like constant folding and loop invariant code motion that are typically based on special-purpose local...
متن کاملChaos for a Fast, Secure, and Predictable Future
Violating a program’s semantics for fun and profit is a time honored hacker tradition. Compilers defend against such fiends by inserting run-time checks to enforce semantic safety properties. Safe language compilers insert type checks for down-casts, information flow compilers [11] add run-time checks to prevent information leakage, and tools like SAFECode [8], WIT [1], and DFI [6] insert run-t...
متن کاملFlow-Sensitive Sub-Zero Control-Flow Analysis in Linear-Log Time
Traditional control-flow analysis (CFA) for higher-order languages is too expensive to be used as an every-day analysis in an otherwise fast compiler that is often called upon to compile large programs. It is even more expensive when flow sensitivity is added to handle optimizations like type recovery. In particular, the fastest known algorithms for 0CFA, the least expensive of the popular kCFA...
متن کاملA Comparison of Compiler Tiling Algorithms
Linear algebra codes contain data locality which can be exploited by tiling multiple loop nests. Several approaches to tiling have been suggested for avoiding connict misses in low associativity caches. We propose a new technique based on intra-variable padding and compare its performance with existing techniques. Results show padding improves performance of matrix multiply by over 100% in some...
متن کاملHybrid Information Flow Analysis for Programs with Arrays
Information flow analysis checks whether certain pieces of (confidential) data may affect the results of computations in unwanted ways and thus leak information. Dynamic information flow analysis adds instrumentation code to the target software to track flows at run time and raise alarms if a flow policy is violated; hybrid analyses combine this with preliminary static analysis. Using a subset ...
متن کامل